import config from '@/config/request.js';
const http = (options = {}) => {
	let {
		url,
		data,
		method,
		token,
		header
	} = options

	let headers = header || {
		"Content-type": config.CONTENTTYPE + ";+charset=UTF-8",
		"Authorization": uni.getStorageSync('token'),
		"type": "token"
	}
	return new Promise((resolve, reject) => {
		uni.request({
			url: config.UPLOADAPI + url,
			data,
			header: headers,
			method,
			dataType: 'json',
			success: (res) => {
				// 商家登录
				if ((res.statusCode == 401 || res.statusCode == 403) && headers.type ==
					"merchantsToken") {
					// uni.removeStorageSync('merchantsToken')
					uni.reLaunch({
						url: `/pages/merchants/merchantsLogin`
					})
				}
				//需要登录操作
				if ((res.statusCode == 401 || res.statusCode == 403) && headers.type ==
					"token") {
					//清除过期token
					uni.removeStorageSync('token')
					//跳转到登录页面		
					console.log("检测不到token")
					uni.navigateTo({
						url: `/pages/mine/loginPage`
					})
				}
				//正常请求，放行
				if (res.data.code == 0) {
					resolve(res.data)
				} else {
					// 因为错误的请求一定要有提示信息，所以一般请求错误后就先提示再放行，具体接口处不用再提示，但是成功后的接口却不一定需要提示，比如查询列表接口，所以直接放行
					// 如果接口需要提示，那么自行判断接口返回的code成功后弹出提示即可					
					if (res.data.code != 1003) {
						uni.showToast({
							icon: "none",
							title: res.data.result,
							duration: 1500,
						})
					}
					setTimeout(() => {
						resolve(res.data)
					}, 150)
				}

			},
			fail: (res) => {
				console.log(res)
				//请求失败，可能原因超时
				uni.showToast({
					title: "系统开了会小差，请稍后重试喔~",
					icon: 'none',
					duration: 2000
				})
				reject(res.data)
			}
		})
	})
}

export default {
	http
}
// 封装接口
